package com.coolingme.course;

/**
 * 课程抽象模板
 *
 * @author wangyue
 * @date 2020-09-21 22:03
 */
public abstract class AbstractCourse {

    /**
     * 创建课程模板
     */
    public final void createCourse() {
        preview();
        learn();
        if (needHomework()) {
            doHomework();
        }
    }

    /**
     * 预习
     */
    abstract void preview();

    /**
     * 上课
     */
    abstract void learn();

    /**
     * 钩子函数
     *
     * @return 是否需要做家庭作业
     */
    protected boolean needHomework() {
        return false;
    }

    /**
     * 做家庭作业
     */
    protected void doHomework() {
        // pass
    }


}
